package cn.doitedu.day06

/**
 * 介绍柯里化方法
 * 方法的有多个括号可以传参
 * 柯里化方法的特点：
 *  1.多个括号，可以更加明确每个括号的参数的作用
 *  2.柯里化方法可以结合隐式参数一起使用
 */
object KeLiDemo {

  //普通的方法
  def m2(a: Int, b: Int): Int = {
    a + b
  }

  //柯里化方法
  //k1这个方法，有两个括号可以传入参数
  def k2(a: Int)(b: Int): Int = {
    a + b
  }
  //这也是柯里化方法
  def k3(a: Int)(b: Int)(c: Int): Int = {
    a + b + c
  }


  def main(args: Array[String]): Unit = {

    //val r = k2(3)(5)
    //val r2 = m2(3, 5)
    //println(r2)

    //调用方法，只传部分参数,报错
    //val r3 = k2(5)

    //k2方法传入一个参数，后面再跟一个空格_,会返回一个新的函数
    //f: Int => Int = $Lambda$1058/2023817059@7c601d50
    val f2 = k2(5) _
    val f22 = (x: Int) => k2(5)(x)
    //


    //println(r3)

  }

}
